package com.stx.demo1011;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

//将字节还原成对象——反序列化
//把对象拍扁成字节——序列化
//对象 → 字节：像把乐高城堡拆成零件装进盒子（序列化）
//        字节 → 对象：再把零件拿出来重新拼成城堡（反序列化）

import java.io.FileNotFoundException;
import java.io.IOException;

public class 序列化 {
//    反序列化漏洞 = “把外面传进来的字节流，直接还原成对象时没做安检” → 攻击者塞进恶意数据，服务器一还原就执行任意代码（RCE）。
//    一句话记忆：
//            “字节流里夹带私货，程序一复活就爆炸。”

    public static void main(String[] args) {
        User user = new User("xiaoming", 18, "nan");
        //序列化操作--保存到文件里
        try {
            //创建一个文件，将后续序列化的文件保存到里面
            FileOutputStream file = new FileOutputStream("D:\\git_homework\\4-6-parts\\task\\README.md");
            //创建序列化工具，将对象user保存到文件里
            ObjectOutputStream oos=new ObjectOutputStream(file);
            //开始序列化操作
            oos.writeObject(user);
        }
        catch (FileNotFoundException e) {
            System.out.println("找不到文件");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
